package org.my.spring.agent.mcp.core.config;

import lombok.Data;
import org.my.spring.agent.mcp.core.domain.enums.BroswerEnum;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;


/**
 * Playwright浏览器配置类
 * 用于绑定agent.playwright前缀的配置属性，管理浏览器实例化所需的参数信息
 */
@Configuration
@Data
@ConfigurationProperties(prefix = "agent.playwright", ignoreInvalidFields = true)
public class AgentPlaywrightConfig {
    /**
     * 浏览器配置列表
     * 包含系统支持的所有浏览器类型及其对应的配置参数
     */
    private List<BrowserModel> browsers;

    /**
     * 浏览器配置模型
     * 封装单个浏览器实例化所需的全部参数
     */
    @Data
    public static class BrowserModel {
        /**
         * 浏览器类型
         * 支持的值: chrome, firefox
         * 默认值: chrome
         */
        private String type = BroswerEnum.CHROME.getName();
        /**
         * 无头模式开关
         * true: 隐藏浏览器窗口运行
         * false: 显示浏览器窗口运行
         */
        private boolean headless;

        /**
         * Chrome安全沙箱启用状态
         * true: 启用安全沙箱
         * false: 禁用安全沙箱(用于特殊权限需求)
         */
        private boolean sandbox;

        /**
         * 开发者工具自动打开开关
         * true: 启动时自动打开开发者工具
         * false: 不自动打开开发者工具
         */
        private boolean devtools;

        /**
         * 浏览器可执行程序路径
         * 指定本地浏览器可执行文件的绝对路径
         */
        private String execPath;

        /**
         * Node.js执行环境路径
         * 指定Playwright依赖的Node.js运行环境路径
         */
        private String nodePath;
    }
}

